package com.wzp.server;

/**
 * @author zhengpeng.wang
 */
public class FindMaxAverage {

    /**
     * 给一个整数数组，找出平均数最大且长度为 k 的下标连续的子数组，并输出该最大平均数。
     * 滑动窗口： 窗口移动时，窗口内的和等于sum加上新加进来的值，减去出去的值
     */
    public static double findMaxAverage(int[] nums, int k) {
        int sum = 0;
        for (int i = 0; i < k; i++) {
            sum += nums[i];
        }
        int maxSum = sum;
        for (int i = k; i < nums.length; i++) {
            sum = sum - nums[i - k] + nums[i];
            maxSum = Math.max(maxSum, sum);
        }
        return maxSum / k;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5};
        System.out.println(findMaxAverage(arr, 3));
    }
}
